#include<stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream>

// 单链表不带头结点

typedef int ElemType;  // 定义元素类型

typedef struct LNode
{
    ElemType data;
    struct LNode *next;
}LNode, *LinkList;

void InitList(LinkList &L){
    L = NULL;
}

// 插入
bool ListInsert(LinkList &L, int i, ElemType e){
    if (i<1) return false;
    if (i==1) {
        LNode *s = (LNode *)malloc(sizeof(LNode));
        s->data = e;
        s->next = L;
        L = s;
        return true;
    }
    LNode *p;
    int j=0;
    p = L;
    while (p!=NULL && j<i-1) {     // 循环找到第i-1个结点
        p=p->next;
        j++;
    }
    if (p==NULL) return false;     // i值不合法
    LNode *s = (LNode *)malloc(sizeof(LNode));
    s->data = e;
    s->next = p->next;
    p->next = s;                  // 将结点s连到p之后
    return true;                  // 插入成功  
}

// 输出
void PrintList(LinkList L){
    while (L != NULL) {
        printf("%d;", L->data);
        L = L->next;
    }
}

int main(){
    LinkList L;
    InitList(L);
    ListInsert(L, 1, 1);
    ListInsert(L, 1, 2);
    PrintList(L);
    system("pause");
    return 0;
}